// Copyright (c) 2012 Ecma International.  All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
es5id: 15.2.3.9-2-a-2
description: >
    Object.freeze - 'P' is own data property that overrides an
    inherited data property
includes: [propertyHelper.js]
---*/

function Test() {
  var proto = {
    foo: 0
  }; // default [[Configurable]] attribute value of foo: true

  var Con = function() {};
  Con.prototype = proto;

  var child = new Con();

  child.foo = 10; // default [[Configurable]] attribute value of foo: true

  Object.freeze(child);

  verifyNotWritable(child, "foo");
  verifyNotConfigurable(child, "foo");

  assert.sameValue(child.foo, 10);
}

// preheat
const NUMBER_OF_PREHEAT = 1;
for (let i = 0; i < NUMBER_OF_PREHEAT; i++) {
  Test();
}

ArkTools.jitCompileAsync(Test);
assert.sameValue(ArkTools.waitJitCompileFinish(Test), true, '[JIT] JIT disabled.');

// test
const NUMBER_OF_TEST = 1; // or 2
for (let i = 0; i < NUMBER_OF_PREHEAT; i++) {
  Test();
}